#ifndef INCLUDED_jax_io_JDataInput
#define INCLUDED_jax_io_JDataInput

#ifndef HXCPP_H
#include <hxcpp.h>
#endif

#ifndef INCLUDED_cpp_CppInt32__
#include <cpp/CppInt32__.h>
#endif
HX_DECLARE_CLASS1(haxe,Int64)
HX_DECLARE_CLASS2(jax,io,JDataInput)
namespace jax{
namespace io{


class JDataInput_obj : public hx::Interface{
	public:
		typedef hx::Interface super;
		typedef JDataInput_obj OBJ_;
		HX_DO_INTERFACE_RTTI;
virtual bool readBoolean( )=0;
		Dynamic readBoolean_dyn();
virtual int readByte( )=0;
		Dynamic readByte_dyn();
virtual int readChar( )=0;
		Dynamic readChar_dyn();
virtual Float readDouble( )=0;
		Dynamic readDouble_dyn();
virtual Float readFloat( )=0;
		Dynamic readFloat_dyn();
virtual Void readFully( Array< int > bytes,Dynamic off,Dynamic len)=0;
		Dynamic readFully_dyn();
virtual ::cpp::CppInt32__ readInt( )=0;
		Dynamic readInt_dyn();
virtual ::String readLine( )=0;
		Dynamic readLine_dyn();
virtual ::haxe::Int64 readLong( )=0;
		Dynamic readLong_dyn();
virtual int readShort( )=0;
		Dynamic readShort_dyn();
virtual int readUnsignedByte( )=0;
		Dynamic readUnsignedByte_dyn();
virtual int readUnsignedShort( )=0;
		Dynamic readUnsignedShort_dyn();
virtual ::String readUTF( )=0;
		Dynamic readUTF_dyn();
virtual int skipBytes( int n)=0;
		Dynamic skipBytes_dyn();
};

#define DELEGATE_jax_io_JDataInput \
virtual bool readBoolean( ) { return mDelegate->readBoolean();}  \
virtual Dynamic readBoolean_dyn() { return mDelegate->readBoolean_dyn();}  \
virtual int readByte( ) { return mDelegate->readByte();}  \
virtual Dynamic readByte_dyn() { return mDelegate->readByte_dyn();}  \
virtual int readChar( ) { return mDelegate->readChar();}  \
virtual Dynamic readChar_dyn() { return mDelegate->readChar_dyn();}  \
virtual Float readDouble( ) { return mDelegate->readDouble();}  \
virtual Dynamic readDouble_dyn() { return mDelegate->readDouble_dyn();}  \
virtual Float readFloat( ) { return mDelegate->readFloat();}  \
virtual Dynamic readFloat_dyn() { return mDelegate->readFloat_dyn();}  \
virtual Void readFully( Array< int > bytes,Dynamic off,Dynamic len) { return mDelegate->readFully(bytes,off,len);}  \
virtual Dynamic readFully_dyn() { return mDelegate->readFully_dyn();}  \
virtual ::cpp::CppInt32__ readInt( ) { return mDelegate->readInt();}  \
virtual Dynamic readInt_dyn() { return mDelegate->readInt_dyn();}  \
virtual ::String readLine( ) { return mDelegate->readLine();}  \
virtual Dynamic readLine_dyn() { return mDelegate->readLine_dyn();}  \
virtual ::haxe::Int64 readLong( ) { return mDelegate->readLong();}  \
virtual Dynamic readLong_dyn() { return mDelegate->readLong_dyn();}  \
virtual int readShort( ) { return mDelegate->readShort();}  \
virtual Dynamic readShort_dyn() { return mDelegate->readShort_dyn();}  \
virtual int readUnsignedByte( ) { return mDelegate->readUnsignedByte();}  \
virtual Dynamic readUnsignedByte_dyn() { return mDelegate->readUnsignedByte_dyn();}  \
virtual int readUnsignedShort( ) { return mDelegate->readUnsignedShort();}  \
virtual Dynamic readUnsignedShort_dyn() { return mDelegate->readUnsignedShort_dyn();}  \
virtual ::String readUTF( ) { return mDelegate->readUTF();}  \
virtual Dynamic readUTF_dyn() { return mDelegate->readUTF_dyn();}  \
virtual int skipBytes( int n) { return mDelegate->skipBytes(n);}  \
virtual Dynamic skipBytes_dyn() { return mDelegate->skipBytes_dyn();}  \


template<typename IMPL>
class JDataInput_delegate_ : public JDataInput_obj
{
	protected:
		IMPL *mDelegate;
	public:
		JDataInput_delegate_(IMPL *inDelegate) : mDelegate(inDelegate) {}
		hx::Object *__GetRealObject() { return mDelegate; }
		void __Visit(HX_VISIT_PARAMS) { HX_VISIT_OBJECT(mDelegate); }
		DELEGATE_jax_io_JDataInput
};

} // end namespace jax
} // end namespace io

#endif /* INCLUDED_jax_io_JDataInput */ 
